package cn.iocoder.yudao.module.brokerage.merchant.service;

import cn.iocoder.yudao.framework.business.basic.service.MerchantExtensionService;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.api.brokerage.agency.vo.AgencyBrokerageMoneyTrendVO;
import cn.iocoder.yudao.module.api.brokerage.agency.vo.AgencyBrokerageSummaryVO;
import cn.iocoder.yudao.module.api.member.agency.vo.AgencyUserVO;
import cn.iocoder.yudao.module.brokerage.merchant.pojo.po.AgencyMerchantDO;
import cn.iocoder.yudao.module.brokerage.merchant.pojo.vo.AppBrokerageMerchantInviteSumVO;
import jakarta.annotation.Nonnull;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 推广商家 Service 接口
 *
 * @author 山野羡民
 */
public interface AppBrokerageMerchantService extends MerchantExtensionService<AgencyMerchantDO> {

    /**
     * 获取数据汇总
     *
     * @param userId 招商人员用户编号
     */
    @Nonnull
    AgencyBrokerageSummaryVO getSummary(Long userId);

    /**
     * 佣金趋势
     *
     * @param userId 招商人员用户编号
     * @param beginTime 开始日期
     * @param endTime 结束日期
     */
    List<AgencyBrokerageMoneyTrendVO> getBonusMoneyTrend(Long userId, LocalDateTime beginTime, LocalDateTime endTime);

    /**
     * 获取推广商家分页
     *
     * @param pageNo 页码
     * @param pageSize 页面大小
     * @param userId 招商人员用户编号
     */
    PageResult<AppBrokerageMerchantInviteSumVO> getAgencyInviteSumPage(Integer pageNo, Integer pageSize, Long userId);

    /**
     * 获取招商人员信息
     *
     * @param shopId 店铺编号
     */
    AgencyUserVO getAgencyUserByShopId(Long shopId);

    /**
     * 增加结算金额
     *
     * @param shopId 店铺编号
     * @param basePrice 基础金额
     * @param settlementMoney 结算金额
     */
    int increaseSettlementMoney(Long shopId, Integer basePrice, Integer settlementMoney);

    /**
     * 减少结算金额
     *
     * @param shopId 店铺编号
     * @param basePrice 基础金额
     * @param settlementMoney 结算金额
     */
    int decreaseSettlementMoney(Long shopId, Integer basePrice, Integer settlementMoney);

}